package com.grape.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.grape.vo.BaseVo;
import com.grape.vo.RoleMenuVO;
import com.grape.vo.RolePermissionVO;
import com.grape.entity.SysRole;
import com.grape.entity.SysUser;

import java.util.List;

/**
 *
 * 角色信息表 服务类
 *
 * @author  putao
 * @email   2628279194@qq.com
 */
public interface ISysRoleService extends IService<SysRole>, BaseService<SysRole> {

    /**
     * 分页
     * @param baseVo 统一分页对象
     * @return 角色信息表集合
     */
    List<SysRole> listData(BaseVo baseVo);

    /**
     * 修改
     * @param sysRole 角色信息表对象
     */
    void updateData(SysRole sysRole);

    /**
     * 新增
     * @param sysRole 角色信息表对象
     * @return 角色信息表对象
     */
    SysRole insertData(SysRole sysRole);

    /**
     * 删除
     * @param id    单据id
     * @return      删除条数
     */
    int deleteData(String id);

    /**
     * 根据id查询详情
     * @param id    角色ID
     * @return      角色对象
     */
     SysRole detail(String id);

    /**
     * 根据用户id查询角色列表
     * @param userId    用户id
     * @return          角色列表
     */
     List<SysRole> getRoleByUserId(String userId);

    /**
     * 根据用户id查询角色列表
     * @param userIdList    用户id集合
     * @return              角色列表
     */
     List<SysRole> getRoleByUserIdList(List<String> userIdList);

    /**
     * 修改角色的权限
     * @param rolePermissionVo  角色和权限数据
     */
    void updateRolePermissionList(RolePermissionVO rolePermissionVo);

    /**
     * 修改菜单的权限
     * @param roleMenuVo  角色和菜单数据
     */
    void updateRoleMenuList(RoleMenuVO roleMenuVo);

    /**
     * 查询全部话题（未删除，且审核状态为审核通过的）
     * @return  角色集合
     */
    List<SysRole> listAll();

    /**
     * 根据角色编码给用户默认权限
     * @param sysUser   用户
     * @param roleCode  默认权限编码（多个时,拼接）
     */
    void addDefaultRoleForUser(SysUser sysUser, String roleCode);
}

